package cn.qdhlm.collectservice.core.component.command;

import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import lombok.extern.log4j.Log4j2;

/**
 * @Name: CmdAfn05
 * @Description: 查询参数
 * @Author: jiangcs
 */
@Log4j2
public class CmdAfn05 {
    /**
     * 查询 服务器1信息
     *
     * @param sn
     * @return
     */
    public static ByteBuf f1(int sn) {
        ByteBuf byteBuf = Unpooled.buffer(2);
        // 数据单元标识：FN
        byteBuf.writeByte(0x01);
        // 数据包序号
        byteBuf.writeByte(sn);
        return Unpooled.wrappedBuffer(packDefault(), byteBuf);
    }

    /**
     * 查询 模组时间
     *
     * @param sn
     * @return
     */
    public static ByteBuf f3(int sn) {
        ByteBuf byteBuf = Unpooled.buffer(2);
        // 数据单元标识：FN
        byteBuf.writeByte(0x03);
        // 数据包序号
        byteBuf.writeByte(sn);
        return Unpooled.wrappedBuffer(packDefault(), byteBuf);
    }

    /**
     * 查询上传模式信息
     *
     * @param sn
     * @return
     */
    public static ByteBuf f4(int sn) {
        ByteBuf byteBuf = Unpooled.buffer(2);
        // 数据单元标识：FN
        byteBuf.writeByte(0x04);
        // 数据包序号
        byteBuf.writeByte(sn);
        return Unpooled.wrappedBuffer(packDefault(), byteBuf);
    }

    /**
     * 查询采集模式信息
     *
     * @param sn
     * @return
     */
    public static ByteBuf f5(int sn) {
        ByteBuf byteBuf = Unpooled.buffer(2);
        // 数据单元标识：FN
        byteBuf.writeByte(0x05);
        // 数据包序号
        byteBuf.writeByte(sn);
        return Unpooled.wrappedBuffer(packDefault(), byteBuf);

    }

    /**
     * 查询表信息
     *
     * @param sn
     * @return
     */
    public static ByteBuf f6(int sn) {
        ByteBuf byteBuf = Unpooled.buffer(2);
        // 数据单元标识：FN
        byteBuf.writeByte(0x06);
        // 数据包序号
        byteBuf.writeByte(sn);
        return Unpooled.wrappedBuffer(packDefault(), byteBuf);
    }

    /**
     * 查询信号
     *
     * @param sn
     * @return
     */
    public static ByteBuf f7(int sn) {
        ByteBuf byteBuf = Unpooled.buffer(2);
        // 数据单元标识：FN
        byteBuf.writeByte(0x07);
        // 数据包序号
        byteBuf.writeByte(sn);
        return Unpooled.wrappedBuffer(packDefault(), byteBuf);
    }

    /**
     * 查询ICCID
     *
     * @param sn
     * @return
     */
    public static ByteBuf f8(int sn) {
        ByteBuf byteBuf = Unpooled.buffer(2);
        // 数据单元标识：FN
        byteBuf.writeByte(0x08);
        // 数据包序号
        byteBuf.writeByte(sn);
        return Unpooled.wrappedBuffer(packDefault(), byteBuf);
    }

    /**
     * 查询程序版本
     *
     * @param sn
     * @return
     */
    public static ByteBuf f9(int sn) {
        ByteBuf byteBuf = Unpooled.buffer(2);
        // 数据单元标识：FN
        byteBuf.writeByte(0x09);
        // 数据包序号
        byteBuf.writeByte(sn);
        return Unpooled.wrappedBuffer(packDefault(), byteBuf);
    }

    /**
     * 查询所有参数
     *
     * @param sn
     * @return
     */
    public static ByteBuf f255(int sn) {
        ByteBuf byteBuf = Unpooled.buffer(2);
        // 数据单元标识：FN
        byteBuf.writeByte(0xFF);
        // 数据包序号
        byteBuf.writeByte(sn);
        return Unpooled.wrappedBuffer(packDefault(), byteBuf);
    }

    /**
     * 命令包：默认
     *
     * @return
     */
    private static ByteBuf packDefault() {
        ByteBuf byteBuf = Unpooled.buffer(2);
        // 功能码：AFN
        byteBuf.writeByte(0x05);
        // 帧序列：SEQ，默认FF
        byteBuf.writeByte(0xFF);
        return byteBuf;
    }
}
